fstdmethods.h File Reference

Convenient macros to create setter and getter methods. More...

Defines

#define DEFINE_VARIABLE(type, varName, methodName)   DATA_MEMBER(type,varName,methodName)
#define DEFINE_POINTER(type, varName, methodName)   POINTER_MEMBER(type,varName,methodName)
#define DEFINE_MEMBER(type, varName, methodName)   CLASS_MEMBER(type,varName,methodName)
#define COMPARE_BY_MEMBER_METHODS(className, memberName)
#define COMPARE_BY_MEMORY_METHODS(className)
#define COMPARE_BY_COMPARE_METHOD(className, methodName)
Methods for flags.

Macros to create setter and getter methods for flags.

Usage example with DEFINE_STATE:

   class MyClass
   {
   public:
      MyClass () : flags (0) {}
      DEFINE_FLAG (flags, isFlagged, 1<<0)
      DEFINE_FLAG (flags, isMine, 1<<1)
   private:
      uint32 flags;
   };
   void someFunction ()
   {
      MyClass c;
      if (c.isFlagged ())        // check the flag
         c.isFlagged (false);   // set the flag
   }


#define DEFINE_STATE(flagVar, methodName, value)
 Create Methods with get and set prefix.
#define DEFINE_FLAG(flagVar, methodName, value)
 Create Methods.
#define DEFINE_FLAG_STATIC(flagVar, methodName, value)
 Create static Methods.
Methods for data members.

Macros to create setter and getter methods for class members.

Examples:

   class MyClass
   {
   public:
      DATA_MEMBER (double, distance, Distance)
      STRING_MEMBER (Steinberg::String, name, Name)
      SHARED_MEMBER (FUnknown, userData, UserData)
      CLASS_MEMBER (Steinberg::Buffer, bufferData, BufferData)
      POINTER_MEMBER (Steinberg::FObject, refOnly, RefOnly)  
   };


#define DATA_MEMBER(type, varName, methodName)
 Build-in member (pass by value).
#define CLASS_MEMBER(type, varName, methodName)
 Build-in member (pass by value).
#define POINTER_MEMBER(type, varName, methodName)
 Build-in member (pass by value).
#define SHARED_MEMBER(type, varName, methodName)
 Build-in member (pass by value).
#define OWNED_MEMBER(type, varName, methodName)
 Build-in member (pass by value).
#define STRING_MEMBER(type, varName, methodName)
 Build-in member (pass by value).
#define STRING8_MEMBER(type, varName, methodName)
 Build-in member (pass by value).
#define STRING_MEMBER_STD(varName, methodName)   STRING_MEMBER(Steinberg::String,varName,methodName)
 Build-in member (pass by value).
#define STRING8_MEMBER_STD(varName, methodName)   STRING8_MEMBER(Steinberg::String,varName,methodName)
 Build-in member (pass by value).

Detailed Description

Convenient macros to create setter and getter methods.


Define Documentation

#define DEFINE_STATE ( flagVar,
methodName,
value   ) 
Value:
void set##methodName (bool state) { if (state) flagVar |= (value); else flagVar &= ~(value); }\
bool get##methodName ()const { return (flagVar & (value)) != 0; }

Create Methods with get and set prefix.

#define DEFINE_FLAG ( flagVar,
methodName,
value   ) 
Value:
void methodName (bool state) { if (state) flagVar |= (value); else flagVar &= ~(value); }\
bool methodName ()const { return (flagVar & (value)) != 0; }

Create Methods.

Same name for the getter and setter.

#define DEFINE_FLAG_STATIC ( flagVar,
methodName,
value   ) 
Value:
static void methodName (bool __state) { if (__state) flagVar |= (value); else flagVar &= ~(value); }\
static bool methodName () { return (flagVar & (value)) != 0; }

Create static Methods.

Same name for the getter and setter.

#define DATA_MEMBER ( type,
varName,
methodName   ) 
Value:
public:void set##methodName (type v) { varName = v;}\
type get##methodName ()const { return varName; }\
protected: type varName; public:

Build-in member (pass by value).

#define CLASS_MEMBER ( type,
varName,
methodName   ) 
Value:
public:void set##methodName (const type& v){ varName = v;}\
const type& get##methodName () const { return varName; }\
protected: type varName; public:

Build-in member (pass by value).

#define POINTER_MEMBER ( type,
varName,
methodName   ) 
Value:
public:void set##methodName (type* ptr){ varName = ptr;}\
type* get##methodName ()const { return varName; }\
private: type* varName; public:

Build-in member (pass by value).

#define SHARED_MEMBER ( type,
varName,
methodName   ) 
Value:
public:void set##methodName (type* v){ varName = v;}\
type* get##methodName ()const { return varName; }\
private: IPtr<type> varName; public:

Build-in member (pass by value).

#define OWNED_MEMBER ( type,
varName,
methodName   ) 
Value:
public:void set##methodName (type* v){ varName = v;}\
type* get##methodName ()const { return varName; }\
private: OPtr<type> varName; public:

Build-in member (pass by value).

#define STRING_MEMBER ( type,
varName,
methodName   ) 
Value:
public:void set##methodName (const tchar* v){ varName = v;}\
const type& get##methodName () const { return varName; }\
protected: type varName; public:

Build-in member (pass by value).

#define STRING8_MEMBER ( type,
varName,
methodName   ) 
Value:
public:void set##methodName (const char8* v){ varName = v;}\
const type& get##methodName () const { return varName; }\
protected: type varName; public:

Build-in member (pass by value).

#define STRING_MEMBER_STD ( varName,
methodName   )     STRING_MEMBER(Steinberg::String,varName,methodName)

Build-in member (pass by value).

#define STRING8_MEMBER_STD ( varName,
methodName   )     STRING8_MEMBER(Steinberg::String,varName,methodName)

Build-in member (pass by value).

#define DEFINE_VARIABLE ( type,
varName,
methodName   )     DATA_MEMBER(type,varName,methodName)
#define DEFINE_POINTER ( type,
varName,
methodName   )     POINTER_MEMBER(type,varName,methodName)
#define DEFINE_MEMBER ( type,
varName,
methodName   )     CLASS_MEMBER(type,varName,methodName)
#define COMPARE_BY_MEMBER_METHODS ( className,
memberName   ) 
Value:
bool operator == (const className& other) const {return (memberName == other.memberName);} \
   bool operator != (const className& other) const {return (memberName != other.memberName);} \
   bool operator < (const className& other) const {return (memberName < other.memberName);} \
   bool operator > (const className& other) const {return (memberName > other.memberName);} \
   bool operator <= (const className& other) const {return (memberName <= other.memberName);} \
   bool operator >= (const className& other) const {return (memberName >= other.memberName);}
#define COMPARE_BY_MEMORY_METHODS ( className   ) 
Value:
bool operator == (const className& other) const {return memcmp (this, &other, sizeof (className)) == 0;} \
   bool operator != (const className& other) const {return memcmp (this, &other, sizeof (className)) != 0;} \
   bool operator < (const className& other) const {return memcmp (this, &other, sizeof (className)) < 0;} \
   bool operator > (const className& other) const {return memcmp (this, &other, sizeof (className)) > 0;} \
   bool operator <= (const className& other) const {return memcmp (this, &other, sizeof (className)) <= 0;} \
   bool operator >= (const className& other) const {return memcmp (this, &other, sizeof (className)) >= 0;}
#define COMPARE_BY_COMPARE_METHOD ( className,
methodName   ) 
Value:
bool operator == (const className& other) const {return methodName (other) == 0;} \
   bool operator != (const className& other) const {return methodName (other) != 0;} \
   bool operator < (const className& other) const {return methodName (other) < 0;} \
   bool operator > (const className& other) const {return methodName (other) > 0;} \
   bool operator <= (const className& other) const {return methodName (other) <= 0; } \
   bool operator >= (const className& other) const {return methodName (other) >= 0; }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines
Empty

Copyright ©2013 Steinberg Media Technologies GmbH. All Rights Reserved.